草庐IT

Swift 枚举评估

全部标签

c++ - 在什么情况下我应该为 C++11 中的枚举类使用固定宽度的整数

我应该在什么情况下使用它:enumclassMyFixedType:uint32_t//oranyotherfixedwidthintegertype{ID1,ID2,ID3};关于这个:enumclassMyType{ID1,ID2,ID3};? 最佳答案 一些可能有用的场景超出了我的脑海:空间有限,您真的不需要标准的int大小的枚举。如果您使用的系统中整数以64位格式存储,并且您只有少于255个不同的枚举值,则您可能需要指定您希望/需要每个枚举元素的位数更少。机器之间的高效通信。假设您知道在两台机器上使用相同的字节顺序,但整数具

c++ - 为枚举索引数组重载 std::get

我发现拥有一个基本上像std::array但由一些枚举的值索引的类相当方便。我想不难想象如何实现它,假设它有一个像这样的签名:classenum_array另一方面,在尝试实现所有标准的std::array相关函数时,我注意到为此类编写重载的std::get函数模板没那么简单。首先,我认为这个std::get具有上述枚举的值作为模板参数是很自然的,因此出现了大多数问题:1)如果我想在类外定义这样的函数,我必须做类似的事情:namespacestd{templateEnumT&get(enum_array&val)但问题是在指定第一个模板参数时EnumT仍然是未知的,所以这个模板实际上是

c++ - 从一个巨大的枚举中,我尝试通过使用一些模板技巧来创建一个函数来应用正确的操作而不使用开关主体

我有一个包含1223个元素的enum类型。我有一个包含1222个案例的函数和一个开关block中的默认案例。如果我想修改enum类型中的一些元素,我也需要修改那个函数。更糟糕的是,我可能有不止一种功能,而且有一个大开关block。所以我试图通过一大堆函数来解决它,每个函数都根据元素应用正确的Action。因为我也想做最少的更改,所以我想隐式完成函数指针赋值,所以我使用了一个模板技巧,让1223个元素的数组被视为1个元素的1223个连续子数组的列表来执行通过每个元素的构造函数进行隐式函数指针分配。禁止使用宏。包括Boost在内的外部库也被禁止。这是一个简化的代码(如果I_LAST_INS

c# - C++ 中的枚举类 - 替换 - 在 C# 中

看看这些c++代码:enumclassFlag:int32{f_unread=(1这些代码在c#中隐藏的是什么? 最佳答案 UsingTangible.看起来差别不大。[Flags]publicenumFlag:int{f_unread=(1在c#中,要使用enum作为flags操作的位域,需要添加FlagsAttribute,即添加[FlagsAttribute]或者[Flags]在enum之前。 关于c#-C++中的枚举类-替换-在C#中,我们在StackOverflow上找到一个类

Swift SpriteKit本地变量

我有一个局部变量bombtower。下面的代码:ifcheckMark.contains(touchLocation){letbombTowerLevel1=SKSpriteNode(imageNamed:"bombtowertrial2")bombTowerLevel1.name="bombtower"//changelatermaybebombTowerLevel1.position=bombTowerGhost.positionbombTowerLevel1.zPosition=1//changelaterforhealthbombTowerLevel1.setScale(frame.s

c++ - 是否可以定义稍后可以评估的 bool 表达式?

希望实现一种动态表达式,稍后我可以在调用时计算bool值。condition&&=condition2;//notevaluatedjustyetcondition||=condition3;if(condition)//evaluatednowdothis;elsedothis;例如,我在我的代码中使用相同的条件,如果我可以只调整一个语句或添加更多语句,即使在程序运行时也会更容易。conditions=(x>50&&y>200)&&(type==MONKEY);conditions&&=(x稍后在代码中if(conditions)cout编辑:应在if语句中评估条件。

c++ - 为什么允许我使用不完整的枚举类?

为什么下面的代码编译没有任何错误?enumclassEnumeration;voidfunc(){autoenumeration=static_cast(2);autovalue=static_cast(enumeration);} 最佳答案 它编译是因为编译器在编译时知道Enumeration的大小(恰好是空的)。您可以使用以下语法明确地看到它:enumclassEnumeration:short;编译器知道关于Enumeration的所有信息。Enumeration是一个opaque-enum-declaration这也意味着该

c++ - 替换枚举以最大化编译时间检查的最佳方法

我有一个处理不同种类货币的相当老的应用程序。目前,货币存储在枚举中,例如:enumCURRENCY{EUR,USD,CNY};doubleconvertMoney(CURRENCYin,CURRENCYout,doublemoney_in){...}这工作很棒,除了这不是真正的类型安全:我还有其他包含注释的函数,例如WARNING:allinputsshouldhavethesamecurrency。我的目标是尽可能通过编译时检查替换这些注释中的大部分。我可以使用C++17和boost。我想到了使用std::variant这样:classEUR{};classUSD{};classCN

C++ 枚举类 std::size_t 隐式转换

我通过创建一个枚举类定义了一个元组及其索引:/**parameter{key;value1;value1;}*/usingParameter=std::tuple;enumclassParameterKey:std::size_t{KEY=0,VALUE1=1,VALUE2=2};现在我想从这个元组中获取一个值:constauto&key=std::get(*parameterPointer);我认为从int到std::size_t的隐式转换是由:std::size_t语法确保的:enumclassParameterKey:std::size_t{....}但是我收到了这个错误erro

c++ - 是否嵌套枚举类?

一个人可以有独立的枚举类:enumclassStreamOpenMode{read,write,readWrite};classStream{public:Stream(StreamOpenModeopenMode)//...};或者将它们嵌套在另一个类中:classStream{public:enumclassOpenMode{read,write,readWrite};Stream(OpenModeopenMode)//...};选择一个而不是另一个的技术原因是什么?例如,嵌套变体不能前向声明,这可能会导致大型项目中的循环依赖问题。 最佳答案